A control flow graph (CFG) is a representation, using graph notation, of all paths that might be traversed through a program during its execution. In a control flow graph each node in the graph represents a basic block, which is a portion of the code within a program with only one entry point and only one exit point. CFG is very good tools that are widely used in software engineering. They help programmers understand the design of the big project. However in practical, some problems are faced. The generated CFG may be hard to use.
For example, FIG. 2 depicts an example CFG 200, which is very hard to read and understand. While the control flow graph such as shown in FIG. 2 is intended to help programmers understand the design of a big project, however, in practical, some problems are faced because the generated CFG is very complicated and hard to read by human in example scenarios such as: to understand code logic of a large scale product with long history; or to understand the relationship between the changing code and the existing code; or when attempting to isolate a root cause in thousands of paths when some error occurred.